<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

<script>
var num;

// 变量提升
// what：什么叫 变量提升
// 函数有预解析，而变量没有预解析。

// 如下代码的特性：
  // 先 执行 变量表达式，再 用 var 声明变量；其变量表达式的返回值是 undefined.
  // 这个 特性就叫 变量提升。

// 变量提升 的本质：
  // 以 var num = 1; 举例：
    // 1) 将 var num; 放到 代码最顶部 2）在原地 num = 1

console.log(num);

var num = 1;


// -------- 再看 赋值式函数

// 以下代码：因为 变量提升， 所以 add 现在的值是 undefined
// 所以 无法 直接 调用函数
console.log(add);  

var add = function(a, b) {
  return a + b;
}

</script>